Soft margin classification

소프트 마진 분류(soft margin classification)
슬랙 변수는 선형적으로 구분되지 않는 데이터에서 선형 제약조건을 완화하기 위해서 도입되었다.
이를 통해 적절히 비용을 손해 보면서 분류 오차가 있는 상황에서 최적화 알고리즘이 수렴한다.

마진 평면을 넘어가는 인스턴스에 대해서 페널티를 부여한다.
페널티는 자신이 속한 클래스의 마진 평면에서 떨어진 거리만큼 부여된다.

매개변수 C를 통해 오차에 대한 비용을 조정할 수 있다.
C값이 크면 오차에 대한 비용이 커진다. ( 로지스틱 회귀 모델은 C값을 줄이면 편향이 늘고 모델 분산이 줄어든다. )
from sklearn.svm import SVC
svm=SVC(kernel='linear', C=1.0, random_state=1)
svm.fit(X_train_std, y_train)
plot_decision_regions(X_combined_std, y_combined, classifier=svm, test_idx=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
plt.show()
로지스틱 회귀와 서포트 벡터 머신
선형 로지스틱 회귀와 선형 서포트 벡터 머신은 종종 매우 비슷한 결과를 만든다. 로지스틱 회귀는 훈련 데이터의 조건부 가능도를 최대화 하기 때문에 이상치에 민감하다. SVM은 결정 경계에 가장 가까운 포인트(서포트 벡터)에 대부분 관심을 둔다.
반면 로지스틱 회귀는 모델이 간단하고 구현하기가 더 쉬운 장점이 있다.
또한 로지스틱 회귀 모델은 업데이트가 용이하므로 스트리밍 데이터를 다룰 때 적합하다.
서포트 벡터 머신의 확률적 경사 하강법
from sklearn.linear_model import SGDClassifier
ppn=SGDClassifier(loss='perceptron')
lr=SGDClassifier(loss='log')
svm=SGDClassifier(loss='hinge')
SGDClassifier 클래슨는 partial_fit 메서드를 사용하여 온라인 학습을 지원한다.